package com.cskaoyan.javase.object._0introduction;
/**
 * API概述:
 * API，全称Application Programming Interface，也就是应用程序编程接口。
 * 这个接口，我们在接口那一章节中，已经说过了。
 * 此接口并不是Java语法中的interface，
 * 而是指一些已经预先定义好的，暴露给外界使用的方法或者工具。
 *
 * API的学习，其实主要就是学习方法的调用，本质上非常简单。
 * 到这里，我们面向对象当中，繁杂的概念还写不出几行代码的窘境就会差不多结束了。
 * 学习一些API后，我们就可以写出一些代码了。
 *
 * API的作用是：开发者可以在不关注具体实现细节的前提下，
 *      使用这些已经预先定义好的类和工具实现自己的需求。
 *
 * 像官方JDK中的API，我们可以通过官方JDK文档去学习，或者百度搜索一下去学习。
 * 而以后公司，程序员之间互相交流接口，就需要依赖于公司的API文档。
 * 所以写文档，也是程序员的必备技能。
 *
 *
 * Object
 * Object类，虽然我们没有详细了解，
 * 但我们知道了：Object类是所有类继承层次的祖先类，
 * Java中所有类（包括数组）都直接或者间接的继承自该类，都实现了该类的方法。
 *
 * 自定义类时，我们并不需要特别的标注extends Object，这是一个隐式的继承。
 * 如果一个类没有明确的指出它的父类，Object类就默认是这个类的父类，extends Object则已经隐含了，不需要写出来。
 *
 * Object是没有成员变量定义的，并且由于子类对象的隐式初始化，
 * Object类有且仅有一个默认提供的无参构造方法。
 * 所以我们学习Object类，主要关注它的成员方法。
 *
 * 以下6个成员方法,今天学习:
 * public final Class getClass()
 *      该方法仅做了解,实际开发中意义不大.
 *      它涉及到Class类的概念,这个概念很重要
 *
 * public String toString()
 *      该方法很常用,天天都用
 *      但是了解即可,因为它很简单
 *
 * public boolean equals(Object obj)
 * public int hashCode()
 * 这两个方法是Object类对子类影响最大的两个方法
 * 作为重点学习,这两个方法关联性很强,要一起学习
 *
 * protected void finalize()
 * 这个方法既没用,也没有意义,仅做了解
 * 在Java9中,该方法已经被注解@Deprecated标记了,表示它是一个过时的方法,被弃用的方法
 * 在开发中,禁止使用过时的方法或者类,Java一旦将一个方法或者类标记为过时,一般都会提供替代的解决方案
 *
 * protected Object clone()
 * 克隆,是一种全新的不同于new的创建对象的方式
 * 它很重要,但不常用
 * 作为了解即可
 *
 * @since 10:55
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 调用了过时的方法
        test();
    }

    @Deprecated
    public static void test(){

    }
}
